package com.levelup.java.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Optional;
import java.util.function.Supplier;
import org.junit.Test;
/**
* This java example will demonstrate uses of
* java.util.Optional.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/java-util-optional-example/'>Optional example</a>
*/
public class OptionalExample {
class Framework {
String name;
int communityUsers;
}
@Test
public void optional_get () {
Framework framework = new Framework();
framework.communityUsers = 200000;
framework.name = "Java";
Optional<Framework> optionalFramework = Optional.of(framework);
assertEquals("Java", optionalFramework.get().name);
}
@Test
public void optional_ifPresent () {
Framework framework = new Framework();
framework.communityUsers = 200000;
framework.name = "Java";
Optional<Framework> optionalFramework = Optional.of(framework);
optionalFramework.ifPresent(p -> System.out.println(p.name));
// or
optionalFramework.ifPresent(System.out::println);
}
@Test
public void optional_ispresent () {
Optional<Framework> framework = Optional.of(new Framework());
assertTrue(framework.isPresent());
}
@Test
public void optional_orElse () {
Framework framework = new Framework();
framework.communityUsers = 200000;
framework.name = "Java";
Optional<Framework> nullOptional = Optional.ofNullable(null);
Framework orElseFramework = nullOptional.orElse(framework);
assertEquals("Java", orElseFramework.name);
}
@Test
public void optional_orElseGet () {
Optional<Framework> optionalFramework = Optional.empty();
Supplier<Framework> defaulFramework = new Supplier<OptionalExample.Framework>() {
@Override
public Framework get() {
Framework framework = new Framework();
framework.communityUsers = 200000;
framework.name = "Java";
return framework;
}
};
Framework framework = optionalFramework.orElseGet(defaulFramework);
assertEquals("Java", framework.name);
}
@Test(expected=IllegalStateException.class)
public void optional_orElseThrow () {
Optional<Framework> optionalFramework = Optional.empty();
optionalFramework.orElseThrow(IllegalStateException::new);
}
@Test
public void optional_empty () {
Optional<Framework> optionalFramework = Optional.empty();
assertFalse(optionalFramework.isPresent());
}
@Test
public void optional_of() {
Framework framework = new Framework();
framework.communityUsers = 10000;
framework.name = "Scala";
Optional<Framework> optionalFramework = Optional.of(framework);
assertEquals("Scala", optionalFramework.get().name);
}
@Test
public void optional_ofNullable () {
Optional<Framework> optionalFramework = Optional.ofNullable(null);
assertFalse(optionalFramework.isPresent());
}
}